package de.hdu.pms.ctrl;

import org.apache.log4j.Logger;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import de.hdu.pms.dao.MitarbeiterDao;
import de.hdu.pms.model.Mitarbeiter;
import de.hdu.pms.dao.BasisDao;

@Controller
public class MitarbeiterController {
	private static Logger Log = Logger.getLogger(MitarbeiterController.class);
	private MitarbeiterDao mitarbeiterDao = null;
	private BasisDao basisDao = null;

	public BasisDao getBasisDao() {
		return basisDao;
	}

	public void setBasisDao(BasisDao basisDao) {
		this.basisDao = basisDao;
	}

	public void setMitarbeiterDao(MitarbeiterDao mitarbeiterDao) {
		this.mitarbeiterDao = mitarbeiterDao;
	}

	
	/**
	 * <p>
	 * Creates or edits Mitarbeiter.
	 * </p>
	 * <p>
	 * Expected HTTP GET and request '/EditMitarbeiter.html'.
	 * </p>
	 * <p>
	 * Linked Viewname to 'edit-mitarbeiter.jsp'
	 * 
	 * @param mit_id
	 * @return Viewname "edit-mitarbeiter" selects the view
	 *         "/view/edit-mitarbeiter.jsp
	 * @author BBV
	 */
	@RequestMapping(value = "/EditMitarbeiter.html", method = RequestMethod.GET)
	public ModelAndView edit(@RequestParam(required = false) Integer id) {
		Log.debug("EditMitarbeiter.html");
		ModelAndView mv = new ModelAndView();
		if (id == null) {
			mv.addObject(new Mitarbeiter());
		} else {
			mv.addObject(mitarbeiterDao.findById(id));
		}
		mv.addObject("title", "Mitarbeiter bearbeiten");
		mv.addObject("message", "Tragen Sie den Mitarbeiter ein");
		mv.addObject("basen", basisDao.findAll());
		mv.setViewName("edit-mitarbeiter");
		return mv;
	}

	
	/**
	 * <p>
	 * Saves a Mitarbeiter.
	 * </p>
	 * 
	 * <p>
	 * Expected HTTP POST and request '/SavePerson.html'.
	 * </p>
	 * 
	 * @return all Mitarbeiter
	 */
	@RequestMapping(value = "/SaveMitarbeiter.html", method = RequestMethod.POST)
	public String save(Mitarbeiter mitarbeiter, Model model, Integer b_id) {
		mitarbeiterDao.save(mitarbeiter, b_id);
		model.addAttribute("statusMessageKey", "person.form.msg.success");
		return "redirect:Mitarbeiter.html";
	}

	
	/**
	 * <p>
	 * Shows all Mitarbeiter
	 * </p>
	 * 
	 * @return all Mitarbeiter
	 */
	@RequestMapping(value = "/Mitarbeiter.html", method = RequestMethod.GET)
	public ModelAndView findAll() {
		ModelAndView mv = new ModelAndView();
		mv.addObject("title", "Mitarbeiter");
		mv.addObject("message", "Alle Mitarbeiter des Betriebs");
		mv.addObject("mitarbeiter", mitarbeiterDao.findAll());
		mv.setViewName("list-mitarbeiter");
		return mv;
	}

}
